草庐IT

windbg 常用命令

全部标签

c++ - 使用 WinDbg 的变量值

问题:如何使用WinDbg显示C++迭代器的值,如下所示for(vector::iteratori=args.begin();i!=args.end();i++)//omitted//forinstance:}elseif(*i=="-i"){//attemptingtodisplaythevalueof*i++i;if(!::PathFileExistsA(i->c_str())){注意:使用??计算C++表达式命令,显示如下:0:000>??iclassstd::_Vector_iterator,std::allocator>,std::allocator,std::allocat

c++ - 如何在 WinDbg 执行期间打印每个函数调用?

我正在调试用VC++编写的应用程序。如何让WinDbg在执行调试进程期间打印函数名称和函数参数的所有值? 最佳答案 好的,我刚刚发现可以使用"wt"来完成命令。 关于c++-如何在WinDbg执行期间打印每个函数调用?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2261848/

c++ - WinDbg SRV* 的文档有误吗?

documentation说:Ifyouincludethestringsrv*inyoursymbolpath,thedebuggerusesasymbolservertogetsymbolsfromthedefaultsymbolstore.Forexample,thefollowingcommandtellsthedebuggertouseasymbolservertogetsymbolsfromthedefaultsymbolstore.Thesesymbolsarenotcachedonthelocalcomputer..sympathsrv*但是我发现符号被缓存了。我使用的

c++ - 在 Windbg 中调试 C++ STL 容器

Windbg粉丝声称它非常强大,我倾向于同意。但是当涉及到调试STL容器时,我总是卡住了。如果变量在堆栈上,则!stl扩展有时会解决这个问题,但是当具有复杂类型(例如std::vector>)的容器位于堆上或某些其他结构的一部分时,我只是不知道如何查看其内容。感谢任何提示、指示。 最佳答案 我经常发现调试器对STL数据类型的支持不足。出于这个原因,我越来越多地使用loggingframeworksandloggingstatements.我曾经认为这些是为那些不能使用调试器的人准备的,但我现在意识到它们提供了真正的值(value)。

windows - 从文件句柄 WinDBG 中检索设备/文件名

是否可以从文件/设备句柄(由CreateFileAPI返回)中检索目标设备名称(\Device\ExampleDevice)或文件名。实际上,我有一个用户模式应用程序,它使用DeviceIoControl()与内核驱动程序通信。因此,当应用程序运行时,我在Kernel32!DeviceIoControl处设置了一个断点。所以当应用程序遇到断点时,我从堆栈中收集了目标设备句柄,应用程序正在向其发送IOCTL。我们知道第二个参数是目标设备句柄。我想知道,有什么方法可以从句柄中获取设备名称(\Device\ExampleDevice),在这种情况下是0x000007bc,而无需在Create

windows - 打印 windows coredump 的堆栈跟踪,无需以交互方式进入 windbg/visual studio

我想通过调用在脚本中编写的预定义命令来获取导致崩溃的线程的堆栈跟踪,以便我运行脚本并获得包含所有线程的反向跟踪的日志文件。然后我可以解析此日志文件以查看是否存在已知问题。 最佳答案 我建议您看一下cdb.它是windbg的一个功能非常全的命令行版本,应该已经与windbg一起安装了。您可以告诉它打开转储、打印堆栈跟踪并使用命令行退出:cdb-zyourdump.dmp-c"~*kv;q"或者您甚至可以幻想并使用以下方法进行一些自动化分析:cdb-zyourdump.dmp-c"!analyze-v;q"这可能更有意义,因为它会在第二

windows - windbg:是否可以在我自己的程序中嵌入 Windgb 引擎?

我想编写一个调试/诊断工具,它可以调用Windbg函数来检查转储文件,而不是编写windbg扩展。这可能吗?有任何引用资料吗?非常感谢。 最佳答案 除了WinDbg,您还可以使用在dbghelp.dll中实现的调试API。它记录在MSDN上.该引用文档相当枯燥,但它应该能让您了解API的功能。例如,MiniDumpReadDumpStream是检查转储文件的门户。 关于windows-windbg:是否可以在我自己的程序中嵌入Windgb引擎?,我们在StackOverflow上找到一个

windows - WinDbg Dr. Watson minidump - 需要最初为安装版本构建的 pdb/dll?

我有一个来自目标应用程序崩溃的mindmp文件。我是否可以为某个版本的软件重建dll/pdb文件并正确地加载windbg符号?我的问题是我们的pdb文件只保留用于主要版本(不幸的是)。这是一个每日构建,我可以自己重建,但我会被错误绊倒。随着!sym嘈杂:“图像标题与内存图像标题不匹配。”DBGENG:C:\...\XXX.dllimageheaderdoesnotmatchmemoryimageheader.DBGENG:XXX.dll-PartialsymbolimageloadmissingimageinfoDBGHELP:Moduleisnotfullyloadedintomem

windows - !heap -s 在 windbg 中不显示不断增长的堆

我写了一个内存泄漏的应用程序-我过去做过以下事情找到泄漏的堆!heap-s检查堆!heap-stat-h查看分配的调用堆栈!heap-p-a为了获取调用堆栈,我将+ust添加到gflags虽然我过去在这方面取得了巨大成功,但!heap-s今天没有显示出任何增长吗?我不知道怎么了?就好像我的分配在堆中,对!heap-s是隐藏的?想法?我正在使用VisualStudio2010pro进行编译(x86和x64)。使用windbg调试 最佳答案 妙语——当分配小于1MB(默认)时,它们转到HeapAlloc(),当它们大于1MB时,它们转到

windows - windbg 转储命令失败,出现错误 0x8007012b

客户正在trycatch挂起的小型转储。他启动WindDbg并成功附加到进程。WinDbg显示其标题:Microsoft(R)WindowsDebuggerVersion6.11.0001.404AMD64Copyright(c)MicrosoftCorporation.Allrightsreserved.并枚举加载的模块。他输入一个转储命令:.dump/mc:\problem.dmp报告:Creatingc:\problem.dmp-miniuserdumpWriteMemoryFromProcess.Read(0x1f1e000,0x2000)failed,0x8007012bDu